1. Field of the Invention
The present invention relates in general to computer programs, and more particularly to translating a path expression of an object oriented query into relational joins.
2. Description of the Related Art
Enterprise JavaBeans (EJB) is a specification of an architecture for developing and deploying component-based distributed applications. Distributed applications developed using the Enterprise JavaBeans architecture are scalable, transactional, and multi-user secure. Such a distributed application may be written once, and then deployed on various server platforms supporting the Enterprise JavaBeans specification. An EJB architecture comprises an EJB server, EJB containers that execute on the EJB server, and EJB's that execute in these EJB containers. EJB servers and EJB containers are developed and deployed by various middleware providers, and an application developer may use the EJB components to develop and deploy a component-based distributed application.
Enterprise Java Beans 2.0 (EJB 2.0) defines an EJB Query Language (EJBQL) which provides a solution for defining portable finder methods for container managed persistence (CMP) entity beans. Prior to EJB QL, the specification of CMP finder methods for a bean was vendor specific. If such a vendor specific bean is deployed into a different database having a different database schema mapping, then the vendor specific finder helper methods must be redefined. EJB Query Language makes the specification of finder methods easier and more portable.
The EJB Query Language provides a construct known as a path expression which specifies a navigation route from a previously referenced schema to a new schema. A path expression may appear in an EJB QL query in either a SELECT clause, a WHERE clause, or a FROM clause, and thus path expressions affect both the scope and the results of an EJB QL query). However, although an EJB QL query may be converted into a SQL query to execute against a database, the path expressions are extensions not found in SQL.
Path expressions may be translated to SQL joins operations when EJB's are mapped to relational tables. Path expressions in the SELECT clause are translated to a left outer join, path expressions in the FROM clause are translated to an inner join, and path expressions in the WHERE clause can be translated to either an inner join or an outer join depending on usage context. The translated SQL then consists a mixture of inner and left outer joins operations. Although a series of inner joins can appear in any order, the order of a mixture of inner joins and outer joins is critical for both the validity and performance of the query.
Thus, there is a clearly felt need for an improved translation of a path expression of an object oriented query into relational joins.